package cn.mujiankeji.mbrowser.界面.标签页.脚本

import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width
import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.OutlinedTextField
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.unit.dp
import cn.mujiankeji.mbrowser.工具.mlog
import cn.mujiankeji.mbrowser.界面.图标.MyIconPack
import cn.mujiankeji.mbrowser.界面.图标.myiconpack.保存
import cn.mujiankeji.mbrowser.界面.组件.标签页.基础标签页
import kotlinx.coroutines.launch

/**
 * 脚本编辑标签页
 * 
 * @param state 脚本编辑标签状态
 */
@Composable
fun 脚本编辑标签页实现(state: 脚本编辑标签状态) {
    state.coroutine = rememberCoroutineScope()
    DisposableEffect(Unit) {
        onDispose { state.coroutine = null }
    }
    var 显示保存确认 by remember { mutableStateOf(false) }
    
    // 设置协程作用域
    LaunchedEffect(Unit) {
        // 如果是编辑模式且尚未加载，手动触发加载
        if (state.是否编辑模式 && state.脚本源代码.isEmpty() && !state.正在加载) {
            mlog("脚本编辑标签页: 自动触发脚本加载")
            state.刷新()
        }
    }
    
    // 记录状态变化
    LaunchedEffect(state.正在加载, state.错误信息) {
        mlog("脚本编辑标签页状态变化: 正在加载=${state.正在加载}, 错误信息=${state.错误信息}")
    }
    
    基础标签页(
        标题 = state.标题.value ?: "脚本编辑",
        返回操作 = null, // 标签页不需要返回按钮
        操作按钮 = {
            if (state.正在保存) {
                CircularProgressIndicator(
                    modifier = Modifier
                        .padding(16.dp)
                        .height(24.dp)
                        .width(24.dp),
                    strokeWidth = 2.dp
                )
            } else {
                IconButton(
                    onClick = { state.保存脚本() },
                    enabled = !state.正在加载
                ) {
                    Icon(MyIconPack.保存, contentDescription = "保存")
                }
            }
        },
        正在加载 = state.正在加载,
        错误信息 = state.错误信息,
        内容 = {
            // 脚本编辑器内容
            Column(
                modifier = Modifier
                    .fillMaxSize()
                    .padding(horizontal = 8.dp, vertical = 4.dp)
            ) {
                OutlinedTextField(
                    value = state.脚本源代码,
                    onValueChange = { state.更新脚本源代码(it) },
                    modifier = Modifier.fillMaxSize(),
                    textStyle = MaterialTheme.typography.bodyMedium.copy(
                        fontFamily = FontFamily.Monospace
                    ),
                    placeholder = { Text("在此处编写脚本代码") }
                )
            }
        }
    )
} 